/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package backingbeans;

import co.uam.soi.entity.Evento;
import co.uam.soi.entity.Grupo;
import co.uam.soi.entity.Persona;
import co.uam.soi.session.EventoFacadeLocal;
import co.uam.soi.session.PersonaFacadeLocal;
import co.uam.soi.util.SoiUtil;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;

/**
 *
 * @author hayner
 */
@SessionScoped
@ManagedBean (name="eventoAction")
public class EventoAction {
    private Evento evento = new Evento();
    private String fecha = "";
    @EJB 
    private EventoFacadeLocal eventoFacadeLocal;
    @EJB
    private PersonaFacadeLocal personaFacadeLocal;
    private List<Evento> listaEvento = new ArrayList<Evento>();
    private String idEvento;
    private List<SelectItem> listaPersonas = new ArrayList<SelectItem>();
    private String personaSeleccionada;


    /**
     *
     */
    public String guardarEvento(){
        try{

            System.out.println("entro");
            evento.setPersonaId(personaFacadeLocal.find(new Short(personaSeleccionada)));
            evento.setGrupoId(new Grupo());
            System.out.println("id "+evento.getId());
            System.out.println("fecha "+evento.getFecha().toString());
            System.out.println("lugar "+evento.getLugar());
            System.out.println("descripción "+evento.getDescripcion());
            
            eventoFacadeLocal.create(evento);
        }
        catch(Exception ex){

        }
        return cargarListaEventos();
    }

    /**
     *
     */
    public void eliminarEvento(){
        idEvento = (String) SoiUtil.obtenerParametro("idEvento");
        if(idEvento!=null){
            try{

                evento=obtenerEventoPorId(Short.parseShort(idEvento));
                eventoFacadeLocal.remove(evento);
            }
            catch(NumberFormatException nfe){
                System.out.println("el identificador no es un número, por favor corrija");
            }
            catch(Exception ex){
                System.out.println("ha ocurrido un problema al eliminar el evento con el id "+idEvento);
            }
        }
        cargarListaEventos();
    }

    /**
     *
     * @param id
     * @return
     */
    public Evento obtenerEventoPorId( Short id){
        Evento eventoObtenido = new Evento();
        try{
            eventoObtenido= eventoFacadeLocal.find(id);
        }
        catch(Exception ex){
            System.out.println("Se genero un problema al buscar el evento con el id "+id);
        }
        return eventoObtenido;
    }

    /**
     *
     * @return
     */
    public String cargarEvento(){
        idEvento = (String)SoiUtil.obtenerParametro("idEvento");
        try{
            evento=obtenerEventoPorId(Short.parseShort(idEvento));
        }
        catch(NumberFormatException nfe){
            System.out.println("el identificador no es un número, por favor corrija");
        }
        catch(Exception ex){
            System.out.println("ha ocurrido un problema al cargar el evento con el id "+idEvento);
        }
        return "EDITAR_EVENTO";
    }

    /**
     *
     */
    public String editarGrupo(){
        try{
            eventoFacadeLocal.edit(evento);
        }
        catch(Exception ex){
            System.out.println("ha ocurrido un problema al editar el evento con el id "+evento.getId());
        }
        return cargarListaEventos();
    }

    /**
     *
     * @return
     */
    public String cargarListaEventos(){
        listaPersonas = obtenerSelectPersona(obtenerListaPersona());
        evento=new Evento();
        idEvento=null;
        listaEvento=obtenerListaEventos();
        return "LISTAR_EVENTO";
    }

    /**
     *
     * @return
     */
    public List<Evento> obtenerListaEventos(){
        List<Evento> listadoEventos = new ArrayList<Evento>();
        try{
            listadoEventos=eventoFacadeLocal.findAll();
        }
        catch(Exception ex){
            System.out.println("ha ocurrido un problema al obtener el listado de eventos ");
        }
        return listadoEventos;
    }

    public List<SelectItem> obtenerSelectPersona(List<Persona> lista) {
        List<SelectItem> resultado = new ArrayList<SelectItem>();
        for(Persona persona : lista) {
            resultado.add(new SelectItem(persona, persona.getNombre()));
        }
        return resultado;
    }

    public List<Persona> obtenerListaPersona() {
        List<Persona> lista = new ArrayList<Persona>();
        try {
            lista = personaFacadeLocal.findAll();
        } catch (Exception e) {
            System.out.println("Erroi al obtener la lista de personas ");
        }
        return lista;
    }

    /**
     *
     * @return
     */
    public String irANuevo(){
        listaPersonas = obtenerSelectPersona(obtenerListaPersona());
        return "CREAR_EVENTO";
    }

    /**
     *
     * @return
     */
    public String volverAMenu(){
        return "GRUPO_EVENTO";
    }

    public Evento getEvento() {
        return evento;
    }

    public void setEvento(Evento evento) {
        this.evento = evento;
    }

    public String getIdEvento() {
        return idEvento;
    }

    public void setIdEvento(String idEvento) {
        this.idEvento = idEvento;
    }

    public List<Evento> getListaEvento() {
        return listaEvento;
    }

    public void setListaEvento(List<Evento> listaEvento) {
        this.listaEvento = listaEvento;
    }

    public String getFecha() {
        return fecha;
    }

    public void setFecha(String fecha) {
        this.fecha = fecha;
    }

    public List<SelectItem> getListaPersonas() {
        return listaPersonas;
    }

    public void setListaPersonas(List<SelectItem> listaPersonas) {
        this.listaPersonas = listaPersonas;
    }

    public String getPersonaSeleccionada() {
        return personaSeleccionada;
    }

    public void setPersonaSeleccionada(String personaSeleccionada) {
        this.personaSeleccionada = personaSeleccionada;
    }

    

    
    
}
